typedef wchar_t WCHAR;
typedef WCHAR OLECHAR;//实质 typedef wchar_t OLECHAR
这2句话的意思是:用OLECHAR定义或声明变量时等价于用wchar_t类型,wchar_t类型你可以“认为”是char 类型。我把程序改下:
这三句
typedef wchar_t WCHAR; // wc, 16-bit UNICODE character
typedef WCHAR OLECHAR;
typedef OLECHAR *BSTR;
等价于:typedef wchar_t *BSTR; 在C++里,如果类型重新命名,含有“*”的,你所重命名的标识符,用来定义的变量就是指针类型,例如 BSTR a;等价于 wchar_t *a;这个是文法规定,你记住就好了,我也是这样.
对于:
wchar_t a; //定义变量a,“等价于” char a;
BSTR a;由于BSTR 等价于 wchar_t*,因此等价于 wchar_t *a;定义指针变量,你这样记住就行了,typedef int *INT;那么 INT a;等价于int *a; 你记得就行,还有更复杂的用法你自己以后遇到在问.
BSTR* a; //BSTR等价于wchar_t*,因此BSTR*表示二级指针,就是说你定义的a指针变量存放的数据时目标变量的地址。,BSTR* a等价于 wchar_t **a; *a表示存放wchar_t变量的地址,**a表示存放具体字符(内容)对于这个是语法知识,只能记住,他就是这样用的,不要问我为什么这么教,应该问下C语言创始人为什么这么搞.
对于
STDMETHODIMP CtestClassN::get_protety1(BSTR* pVal)
{
// TODO: 在此添加实现代码
* pVal=L""; //为什么前面加星号 ,不是在指针定义的时候才加吗
return S_OK;
}
STDMETHODIMP CtestClassN::put_protety1(BSTR newVal)
{
// TODO: 在此添加实现代码
return S_OK;
}
这是类函数成员的定义形式是:
类型 类(类型)::函数名(变量){}
如果不懂,不要强求,毕竟C++难学,也不要强求太快,心急吃不了人豆腐,又不懂的可以问我
我学的不怎么好,说真的!!!
因为pVal是二级指针,
类似于char **
*pVal 即,二级指针变量的内容存的是字符串的地址
这又涉及参数传递创建副本的问题,如果不了解可以看看林锐的高质量c/c++编程
wchar_t a; 定义了一个wchar_t变量
BSTR a;定义了一个wchar_t指针
BSTR* a;定义了一个wchar_t指针的指针
* pVal=L""; 意思是给这个指针所指位置的元素赋值