C++的类为什么要用指针

这个问题原来是这样的:

C++的对象和C#不同,C++的对象是放在栈区的,C#的对象是引用类型。

这就意味着,C++进行类型转换的时候,由于调用了复制构造函数,其转换后,对象会丢弃一部分信息。

派生类变成基类以后,再也无法变回去了。。。。。

C#使用的是引用类型

一句话 C++ 是 C#的半成品, 别指望C#上那些高级功能C++都有。C++是一门必须重新学习的低级语言。

时间: 2024-09-28 23:00:13

C++的类为什么要用指针的相关文章

类成员函数的指针与多态性

1 类成员函数的指针 2 类成员函数的指针数组 3 指向类成员函数的指针的指针 1 类成员函数的指针 auto func1 = &com::jia;//C++函数指针 int (com::*p)(int, int) = &com::jia;//C函数指针 1 #include <iostream> 2 3 class com 4 { 5 private: 6 int a; 7 int b; 8 public: 9 com(int x, int y) :a(x), b(y) 10

C++ Primer 学习笔记_57_类与数据抽象 --管理指针成员

复制控制 --管理指针成员 引言: 包含指针的类需要特别注意复制控制,原因是复制指针时只是复制了指针中的地址,而不会复制指针指向的对象! 将一个指针复制到另一个指针时,两个指针指向同一对象.当两个指针指向同一对象时,可能使用任一指针改变基础对象.类似地,很可能一个指针删除了一对象时,另一指针的用户还认为基础对象仍然存在.指针成员默认具有与指针对象同样的行为. 大多数C++类采用以下三种方法之一管理指针成员: 1)指针成员采取常规指针型行为:这样的类具有指针的所有缺陷但无需特殊的复制控制! 2)类

类的成员函数指针(比較深入)

From:http://blog.csdn.net/hairetz/archive/2009/05/06/4153252.aspx 个人感觉对于类的成员函数指针这块解说的比較深入具体 推荐阅读 ///////////////////////////////////////////////// 先看这样一段代码 class test {    public:       test(int i){ m_i=i;}       test(){} void hello()       {        

VB6/VBA中跟踪鼠标移出窗体控件事件(类模块成员函数指针CHooker类应用)

前几天发了一篇博文,是关于获取VB类模块成员函数指针的内容(http://www.cnblogs.com/alexywt/p/5880993.html):今天我就发一下我的应用实例. VB中默认是没有鼠标移出事件响应的,而这个事件其实在项目开发中,实用性很强,很多时候需要在鼠标移出窗体或控件时做些事情:没有这个事件会感觉很费力: 今天我所说的实际案例就是,在窗体上,设计一个SplitterBar控件,窗体的最终用户使用这个控件可以在运行程序时任意调整其内部控件大小. 我在第二篇参考博文作者开发的

类的成员函数指针

一个类的成员函数指针使用前,必须添加一个类的对象. 普通类的成员函数指针建立: 返回值 (类名::指针名)(函数参数)=void (A::*pt)(int,bool); 初级实例代码一: 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 void set(int x,int y){i=x,j=y;} 8 int get(){return i*j;} 9 private: 10 int i; 11 i

类的成员函数指针和mem_fun适配器的用法

先来看一个最简单的函数: void foo(int a) { cout << a << endl; } 它的函数指针类型为 void (*)(int); 我们可以这样使用: void (*pFunc)(int) = &foo; pFunc(123); 这就是函数指针的基本使用.   类的成员函数   那么,对于类的成员函数,函数指针有什么不同呢? 我们观察下面的类: class Foo { public: //void (Foo::*)(int) void foo(int

C++类中的this指针的作用

1.我们知道C++的类成员函数中,默认都隐含了一个this指针,标识调用该成员函数的对象 2.为什么需要有一个this指针呢?C++设计这个机制的初衷是什么呢? 我们知道,普通的C++类,其成员函数是类的所有对象共享的,而数据时每个对象所独有的.即:数据独有,方法共享 因此在调用类的某个成员方法(非静态方法)时,我怎么知道是哪个对象调用的呢?此时就是通过this指针来区分的,通过this指针我可以区分是该类的哪个对象正在调用该成员方法. 注意事项: a.this指针不属于对象本身的一部分,不会影

获取VB类模块成员函数指针(转)

最近在做一些VB6.VBA的项目,被如何获取类模块中的函数指针这个问题所困扰,收集整理后,有2分资料值得收藏,特将关键部分留存,以备后续查找. 参照连接1:http://www.cnblogs.com/pctgl/articles/1352916.html 参照连接2:http://blog.csdn.net/lyserver/article/details/4224676 以下是链接1中的部分内容: 1. 函数地址 = GetClassProcAddress ( 指定为哪个函数 [上面解释],

C++——类的成员函数指针以及mem_fun适配器

有这样一个类,我们以此类为基础: 1 class Foo 2 { 3 public: 4 5 //void (Foo::*)(int) 6 void foo(int a) 7 { 8 cout << a << endl; 9 } 10 11 //void (*)(int) 12 static void bar(int a) 13 { 14 cout << a << endl; 15 } 16 }; 我们尝试调用函数指针: void (*pFunc)(int)

C++ 面向对象 类成员函数this指针

每个类成员函数都只涉及一个对象, 即调用它的对象. 但有时候方法可能涉及到两个对象, 在这种情况下需要使用C++ 的 this 指针 假设将方法命名为topval(), 则函数调用stock1.topval()将访问stock1的对象数据:stock2.topval()将访问stock2的对象数据: 如果希望该方法的两个对象进行对比, 则必须将第二个对象作为参数传递给它.这时候涉及到隐式和显式: top = stock1.topval(stock2); 隐式的访问了stock1, 显示的访问了s