【C++ 常函数修改数据成员一题】教程文章相关的互联网学习教程文章

JNI java 调c++动态库函数,多值回传及乱码问题

一,JNI java 调c++动态库函数的问题 1.多参数回传 2.参数传递出现乱码 二,解决 1.使用byte[]数组传入c++,在生成的头文件里就会变成jbyteArray 类型 例如,java 中参数:byte[]account,头文件里参数变成jbyteArray account, 通过c++修改完account的值后,java要获取该值,直接使用 jbyte* jbAccount = (env)->GetByteArrayElements(env, account, 0); char* szAccount = (char*)jbAccount; 指针的地址并不是account的地址,最后赋...

C++ 虚函数表与多态 —— 使用继承 & 多重继承的虚函数表【代码】【图】

1. 使用继承的虚函数表:每个类只有1个虚函数表,当子类继承父类后,子类可以自己改写和新增虚函数,如下图所示: 子类重写 func_1 后,子函数的 func_1 将会有新的逻辑,不会干扰到父类;子类新增行的 func_4 方法后,父类无法访问到该方法。 如下代码: 1 #include <iostream>2usingnamespace std;3 4class Father5{6public:7virtualvoid func_1() { cout << "Father::func_1" << endl; }8virtualvoid func_2() { cout << "Fathe...

C++入门经典-例6.15-通过字符串函数连接两个字符数组【代码】【图】

1:代码如下// 6.15.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> usingnamespace std; void main() {char str1[50], str2[30], *p1, *p2;p1 = str1;p2 = str2;cout << "please input string1:" << endl;gets_s(str1);cout << "please input string2:" << endl;gets_s(str2);strcat_s(str1, str2);//对字符串也行,对数组也行cout << "the new string is:" << endl;puts(str1); }View Code运行...

【C++】利用指针实现通过函数改变多个参数的值【代码】

写惯了python,对于C++的语法越来越生疏,不同于python中函数可以return多个变量,C++的函数要想返回多个参数可以利用指针实现。因为在函数内部的变量都是局部变量,所以当参数传入函数中,不return不会改变函数之外的全局变量的值。但是如果传入指针参数或者地址参数,则可以实现对外部变量的改变。有以下2种做法:1、函数定义:void function(int &a){a = 500;//return; //void时可以省略return } 函数调用:int b = 10; func...

c++ 库函数cmath

cmath中常用库函数:int abs(int i);//返回整型参数i的绝对值double fabs(double x);//返回双精度参数x的绝对值long labs(long n);//返回长整型参数n的绝对值double exp(double x);//返回指数函数e^x的值double log(double x);//返回logex的值,如果要求其他的,利用换底公式计算 double log10(double x) 返回log10x的值double pow(double x,double y) 返回x^y的值double pow10(int p) 返回10^p的值double sqrt(double x) 返回+√x...

【转】C++11 标准新特性:Defaulted 和 Deleted 函数【代码】

原文链接http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/本文将介绍 C++11 标准的两个新特性:defaulted 和 deleted 函数。对于 defaulted 函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量。对于 deleted 函数, 编译器会对其禁用,从而避免某些非法的函数调用或者类型转换,从而提高代码的安全性。本文将通过代码示例详细阐述 defaulted ...

C++入门经典-例2.3-在print函数中使用附加符号【代码】【图】

1:代码如下:// 2.3.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h"int main() {long iLong=100000; /*定义长整型变量,为其赋值*/printf("the Long is %ld\n",iLong); /*输出长整型变量*/printf("the string is: %s\n","LOVE"); /*输出字符串*/printf("the string is: %10s\n","LOVE"); /*使用m控制输出列*/printf("the string is: %-10s\n","...

c++ 指向类成员函数的函数指针【代码】

// ConsoleApplication34.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <iostream> usingnamespace std;class Parent { public:Parent(){//cout << "我是爹" << endl; }virtualvoid print() {cout << "我是爹" << endl;} private:int a; }; class Child :public Parent { public:Child(){}void print() {cout << "我是儿子" << endl;} private:int b; };int main() {//返回值类型 (域作用符::*函数指针...

[C++ Primer Plus] 第8章、函数探幽——(二)课后习题【代码】【图】

1.编写通常接受一个参数(字符串的地址),并打印该字符串的函数。然而,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第二个参数的值,而等于函数被调用的次数)。是的,这是一个非常可笑的函数,但它让读者能够使用本章介绍的一些技术。在一个简单的程序中使用该函数,以演示该函数是如何工作的。 1 #include <iostream>2usingnamespace std;...

【C++】子类在重写虚函数时,会覆盖父类的函数

//子类在重写虚函数时,会覆盖父类的函数 #include <iostream> using namespace std; class B { public:B(){cout<<"Create B!"<<endl;} public:virtual void fun(){cout<<"B::fun()"<<endl;}virtual void show(){cout<<"B::show()"<<endl;}void print(){cout<<"B::print()"<<endl;} };class D : public B { public:D(){cout<<"Create D!"<<endl;} public:void fun(){cout<<"D::fun()"<<endl;}void show(){cout<<"D::show()"<<endl;...

C++默认构造函数的合成【代码】

默认构造函数的误解 1.当程序猿定义了默认构造函数,编译器就会直接使用此默认构造函数来一个简单的栗子class Student;class School{public:School(){}...Student students;};我们知道,一个对象,在定义的时候就一定会调用其构造函数。而在我们上面的默认构造函数,明显没有调用students的构造函数,所以,编译器绝对没有直接使用我们的默认构造函数。具体细节,请看下文,这里只提问题。2.当程序猿没有定义构造函数的时候,编译器...

C++编程总结之虚函数的使用【图】

对于一个单一的类来说,析构函数是不是虚函数,其没有实质性的意义。但是当当前类作为基类的时候,基类的析构函数是不是虚函数则会对程序带来不同程度的影响。看下下面的代码运行结果:#include<iostream> using namespace std; class Base { public:Base(){cout << "Base:Constructor" <<endl;}~Base(){cout << "Base:Destructor" << endl;} };class DerivedA:public Base { public:DerivedA(){cout << "DerivedA:Constructor" <<...

C++内联函数【代码】

一、内联函数? 对于代码量较少,而且经常调用的函数,可以使用内联函数来减少函数调用的开销。内联函数是在编译时将函数调用处的函数体替换,类似于宏展开。? 制定内联函数的方法是在函数的定义(不是声明处)出增加 inline关键字。在函数的声明处添加inline关键字虽然没有错,但是这种做法是无效的,编译器会忽略在函数的声明处添加inline关键字。由于内联函数代码量较小,通常的做法是将函数的声明和定义写在一起,不分开来写。二、...

C++中类的构造函数调用顺序

当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时,如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。下面的这个程序说明这个问题总结下...

#C++初学记录(字符串与指针操作库函数)【代码】

测试程序#include<iostream> #include<cstring> using namespace std; int a[204],b[204],lena,n; char s1[100]="12345"; char s2[100]="abcdefg"; char s3[100]="ABCDE"; int main() {strncat (s1,s2,3);//s1="12345abc";strncpy(s1,s3,3);//s3的前三个字符拷贝到s1,s1="ABC45abc"; strncpy(s2,s3,6);//s2="ABCDE";strncmp(s1,s3,3);//比较s1和s3的前三个字符,比较结果相等则输出0,小于则输出负数,大于则输出正数; char *p=s...