首页 相关文章 C++/CLI思辨录之代理构造函数

C++/CLI思辨录之代理构造函数

现在我们讨论一下新的C++/CLI环境下的一个很酷的特性,称作代理构造函数。

  对一个类来说,有多个构造函数是经常的事;并且这多个构造函数有一段共同的代码也很经常。一般地,在这种情况下,我们都是为该共同代码段编写一个独立的函数,然后放在每个构造器中调用。如下例:

class Foo
{
  private:
   int _mem;
  public:
   Foo() : _mem(0)
   {
    CommonConstructor();
   }
   Foo(int mem) : _mem(mem)
   {
    CommonConstructor();
   }
   Foo(const Foo& f) : _mem(f._mem)
   {
    CommonConstructor();
   }
   // 我们所有的构造器都需要的代码段
   void CommonConstructor()
   {
[ 查看全文 ]

2016-02-19 标签:
  • C++类对象的拷贝构造函数 作者:韩耀旭 对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include <iostreamusing namespace std;class CA{public:CA(int b){a=b;}void Show (){cout<<a<<endl;}private:int a;};int main(){CA A(10...[ 查看全文 ]
  • c++中的源程序: 代码如下: class X { private:     int i; }; int main() {     X x; } 上面的类X没有定义构造函数,仅仅有一个int i。 下面为其汇编程序: 代码如下: ; 7    : int main() {     push    ebp;ebp为一个寄存器,总是指向一个函数调用堆栈的栈底,作为基址,用偏移量来访问该调用栈上的变量,但这里...[ 查看全文 ]
  • 看如下代码: 代码如下: #includeiostream class TestConstructor { public:     TestConstructor()     {         std::cout"TestConstructor()"std::endl;     }     ~TestConstructor()     {         std::cout"~TestConstructor()"std::endl; &n...[ 查看全文 ]
  • 数学库函数声明在 math.h 中,主要有: 1、abs(x) 求整型数x 的绝对值 2、cos(x) x(弧度)的余弦 3、fabs(x) 求浮点数x 的绝对值 4、ceil(x) 求不小于x 的最小整数 5、floor(x) 求不大于x 的最小整数 6、log(x) 求x 的自然对数 7、log10(x) 求x 的对数(底为10) 8、pow(x, y) 求x 的y 次方 函数说明: pow()用来计算以x为底的y次方值,即xy值,然后将结果返回。 返回值: 返回x的y次方计算结果...[ 查看全文 ]
  • C++中的虚函数(一) 作者:aber     虽然很难找到一本不讨论多态性的C++书籍或杂志,但是,大多数这类讨论使多态性和C++虚函数的使用看起来很难。我打算在这篇文章中通过从几个方面和结合一些例子使读者理解在C++中的虚函数实现技术。说明一点,写这篇文章只是想和大家交流学习经验因为本人学识浅薄,难免有一些错误和不足...[ 查看全文 ]
  • <C++实践系列C++中的虚函数(virtual function) 作者:张笑猛 提交者:eastvc 发布日期:2003-11-22 14:46:56 原文出处:http://objects.nease.net/ 1.简介     虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次: class A { public:     virtual void foo() { cout << "A::foo() is called...[ 查看全文 ]
  • 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。 sprintf 是个变参函数,定义如下: int sprintf( char *buffer, const char *format [, argument] ... ); 除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然...[ 查看全文 ]
  • 在VC中使用MATLAB C/C++函数库 作者: 殷延伟 下载示例代码1 下载示例代码2 MATLAB广泛应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等领域。因此如果在VC中对MATLAB进行调用将大大减少编程的工作量、保证程序的准确性,并且继承了VC++强大的功能,提高开发效率,本文将介绍了在VC中使用MATLAB函数库的具体步骤: ...[ 查看全文 ]
  • 标签:PHP
        在C/C++中,头文件ctype.h中定义了关于字符类型一组宏,可以得到给定字符的类型。 而PHP中没有相关函数。前些天发现在www.mm4.de下载的PHP中提供了一个名为php_ctype.dll的扩展库, 加载后发现提供一部分此类的函数,特整理出来供大家参考。   在PHP中正确加载php_ctype.dll文件后,用<?php phpinfo();?可以看到以下信息:       ctype ...[ 查看全文 ]
  • /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout /*p129*/#include class CComplex{public: CCpomplex(double r=0,double i=0) { realPart=r; imagePart=i; } void print() { cout[ 查看全文 ]
  • 构造函数中的this指针 作者:温昱 说明:感谢网页C++ FAQ Lite的作者Marshall Cline和译者申旻;感谢《C++语言核心》一书的作者Gregory Satir和Doug Brown及译者张铭泽 -------------------------------原理------------------------------- 某些人认为不应该在构造函数中使用this指针,因为这时this对象还没有完全形成。 但是,只要小心,是可以在构造...[ 查看全文 ]
  • 《c++编程思想》上说一个类如果没有拷贝函数,那么编译器就会自动创建一个默认的拷贝函数。下面就让我们看一下真实的情况。 首先看一个简单的类X,这个类没有显示定义拷贝构造函数。 c++源码如下: 代码如下: class X { private:     int i;     int j; }; int main() {     X x1;//先定义对象x1     X x2 = x1;//将x1拷贝给x2 } 下面...[ 查看全文 ]
  • 简介 一般来说,简单的异步(Asynchronous)调用是这样一种调用方式:发起者请求一个异步调用,通知执行者,然后处理其他工作,在某一个同步点等待执行者的完成;执行者执行调用的实际操作,完成后通知发起者。可以看出,在异步调用中有两种角色:发起者和执行者,它们都是能主动运行的对象,我们称为主动对象,同时还有一个同步点,主动对象在同步点协调同步。在本文中,我们讨论主要是通用计算机、多进...[ 查看全文 ]
  • C++对象计数 作者:yy2better 关键字:C++ 对象计数 实例计数 本文目的是实现一个实用的对C++类计数的类,同时在实现过程中指出一些容易为人忽视的C++知识。 要实现一个类的对象(实例)计数,即程序运行中此类有多少个对象存在,最容易的实现方法是使用静态数据成员。如下: class Widget {public: Widget() { ++count; } ...[ 查看全文 ]
  • C++多态技术 作者:荣耀 提交者:eastvc 发布日期:2003-12-14 19:38:12 原文出处:http://www.royaloo.com/articles/articles_2003/PolymorphismInCpp_content.htm 摘要 本文描述了C++中的各种多态性。重点阐述了面向对象的动态多态和基于模板的静态多态,并初步探讨了两种技术的结合使用。  关键词 多态  继承  虚函数  模板  宏  函数重载 泛型编程  ...[ 查看全文 ]
  • 在c++中,可以为函数提供默认参数,这样,在调用函数的时候,如果不提供参数,编译器将为函数提供参数的默认值。下面从汇编看其原理。 下面是c++源码: 代码如下: int add(int a = 1, int b = 2) {//参数a b有默认值     return a + b; } int main() {    int c= add();//不提供参数 } 下面是mian函数里面的汇编码: 代码如下: ; 4    : int main() { &nb...[ 查看全文 ]
  • c++中,如果没有为一个类提供析构函数,那么编译器会为这个类提供默认的析构的函数。由于析构函数的功能和构造函数相反,因此和默认的构造函数类似,编译器也会提供无用的默认的析构函数,和非无用的析构函数。两者的分析情况一样(对于默认的构造函数分析,请参看《从汇编看c++中默认构造函数的使用分析》)。并且编译器会提供非无用的默认析构函数情形和默认构造函数类似: 1 类含有虚成员函数(类继承自虚...[ 查看全文 ]
  • 比如 一个函数 chat(link &a); chat(ling *a); 前者引入一个地址做形参 是不是可以把一个指针变量p。。 这么用chat(p); 那跟第二个函数 有什么区别呢 都是传地址啊。。 小弟弄不明白~~ chat(int&a); chat(int *a); 这两个函数是完全不同意义的东西,你的理解主要是在int&a和int* a这个类型上面。要注意int&和int*是两个完全不同的类型。int&是引用类型,而int*是指向int类型变量的指针类型。 voi...[ 查看全文 ]
  • 有些书上也称“代表”或“委托”。      C#中取消了指针的概念。对指针恋恋不舍的程序员可以有两种解决方法:声明“非安全”(unsafe)代码段然后在其中使用指针或者使用C#的一个引用类型——“代理”(delegate)。“代理”相当与C中的函数指针原型,区别是C#是类型安全 的。 [ 查看全文 ]
  • 1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。 2. C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,虽然部分语...[ 查看全文 ]
手机页面 收藏网站 回到头部