注册 登录
编程论坛 C++教室

this 简单用法 对比

寒风中的细雨 发布于 2010-11-03 12:12, 1338 次点击
#include <iostream>
using namespace std;
/*
class T
{
public:
    T(int m):m(m)
    {}
    void Show(){ cout << "m = " << m << endl; }
private:
    int m;
};

int main()
{
    T t1(4);
    t1.Show();

    return 0;
}
/////////////////////////////////////////////////////
class T
{
public:
    T(int m):this->m(m)
    {}
    void Show(){ cout << "m = " << m << endl; }
private:
    int m;
};

int main()
{
    T t1(4);
    t1.Show();

    return 0;
}
///////////////////////////////////////////////////////
class T
{
public:
    T(int m)
    {
        m = m;
    }
    void Show(){ cout << "m = " << m << endl; }
private:
    int m;
};

int main()
{
    T t1(4);
    t1.Show();

    return 0;
}
//////////////////////////////////////////////////////
class T
{
public:
    T(int m)
    {
        this->m = m;
    }
    void Show(){ cout<< "m = " << m << endl; }
private:
    int m;
};

int main()
{
    T t1(4);
    t1.Show();

    return 0;
}
*/
15 回复
#2
Only_Boby2010-11-03 12:42
强烈建议不要用#include <iostream.h>
用头文件  #include <iostream>
using namespace std;

这样会减少很多麻烦  

[ 本帖最后由 Only_Boby 于 2010-11-3 22:00 编辑 ]
#3
冥卫2010-11-03 13:26
楼上,说详细点,比如…
#4
hahayezhe2010-11-03 13:45
以下是引用Only_Boby在2010-11-3 12:42:36的发言:

强烈建议不要用#include
using namespace std;
用头文件#include
  这样会减少很多麻烦  
....
#5
2010-11-03 14:01
反正  记得this指针  指向当前对象的指针就行


只有成员函数调用才有this指针     静态成员函数是没有this指针的


貌似在VC6.0    这种调用方式  好像叫this_call
#6
寒风中的细雨2010-11-03 16:44
上面四个程序  有人编译码?
    T(int m):m(m)
    {}

    T(int m):this->m(m)
    {}

    T(int m)
    {
        this->m = m;
    }

    T(int m)
    {
        m = m;
    }
#7
寒风中的细雨2010-11-03 16:46
回复 2楼 Only_Boby
知道什么 叫标准 吗?
#8
lys2457447292010-11-03 21:21
版主为什么第一个和第四个输出一样,而第三个输出却很大,第二个出现了问题
#9
佳人如梦2010-11-03 21:23
回复 2楼 Only_Boby
这种格式 好像是C里面的,  不过看个人吧  只要熟悉都可以的。
#10
pangding2010-11-03 21:31
二楼的不知道被什么人盅惑了。强烈建议在任何情况下使用:
#include <iostream>
而不是
#include <iostream.h>
#11
pangding2010-11-03 21:34
楼主的代码挺有意思的,我以前也不小心写过类似的东西,即使没发生什么问题,自己一般也会改改,至少把可读性弄上去。
至于应该是什么效果我就不研究了,反正应该是属于混乱代码。等等答案看看~~

[ 本帖最后由 pangding 于 2010-11-3 21:38 编辑 ]
#12
BlueGuy2010-11-03 21:36
回复 10楼 pangding
呛着了,
#13
Only_Boby2010-11-03 22:04
回复 3楼 冥卫
比如一着急看错了 ... 还比如一不着急看错了 ...
#14
pangding2010-11-03 22:10
回复 12楼 BlueGuy
呵呵,人家已经知错能改了~~
#15
shadow_rong2010-11-04 13:54
怎么用随自己。。。
  
 新手看这可能会晕。。。 最好的办法区别就是 构造函数形参名 与 我当前 私有成员 同名时,
   记住用 类名::成员对象  就不会有错误了...

 其实用this 指针也是同理...看怎么理解了,只是楼主这么做意义不大,你写代码的时候这样写也不会吧。
#16
2010-11-04 14:12
T(int m)
{
  m = m;             //这就是一条废指令   在release版估计都会被优化掉
}

在成员变量名和形参名一样的时候   

根据作用域原则  使用最近的作用域变量    这和普通变量没啥鸟区别


这和
int main(void)
{
   int i = 0;
  {
      int i = 2;
      cout << i << endl;                  //这里和上边没啥区别  使用的变量,都是最近的作用域变量
  }
}


如果成员变量和形参名相同的话   你就加个this指针就行     

如果

T()
{
    m = 0;
}

这里的m是成员变量    编译器寻址的时候  也是this指针加上m的偏移
1