参数传递          函数参数的传递是初始化语义:用调用者的实参去初始化函数的形参,如果参数是对象,需要调用该类的拷贝构造函数,如果没有显式定义的拷贝构造函数,则执行默认的按成员拷贝          返回值传递          函数返回值的传递内容稍多,示例代码: TestClass get_test_obj() { TestClass ret_obj(200): return ret_obj; } void user() { TestClass obj: obj = get_test…
示例程序: #include <iostream> #include <set> using   namespace std ; class   StudentT { public : int id ; string name ; public : StudentT ( int _id , string _name )   : id ( _id ), name ( _name )   {       } int getId ()   {           return id ; …
Reference Datat Types 引用参考数据类型 -> 组合数据类型 Array, Hash和程序员自定义的复合资料类型 组合数据的修改: 组合数据类型的变量,不是直接存值,而是存一个reference引用位置,指向另一块真正存值的内存空间. 因为组合数据类型是个容器,这个容器可能存有非常多的数据,复制的成本是很高的.因此在默认的情况下,我们不会真的去复制它的值,而是复制引用而已. object_id 方法 显示内存位置 > a = [1,2,3]  => [1, 2, 3]…
Issue: When you inject some resources using @Inject, you may encounter following exception after app deployed. Exception: Caused by: org.jboss.weld.exceptions.DeploymentException:WELD-001408 Unsatisfied dependencies for type [SelectModelFactory] with…
产生问题的场景: int func(const map<int, string> &aMap) { string value = amap[0]; } 或者 int  Test::func()const { string value = amap[0];                 //amap是Test类的成员函数.是就会产生传说中的null引用. } 用g++编译上面的代码,会报……discards qualifiers.       这里是原因. 简单来说,map的[]运算符…
解决方法:在参数前面加一个cosnt或者把引用符号去掉…
/// bugs code with comments #include <iostream> #include <memory> #include <unordered_map> using namespace std; class A { public: A(const std::unordered_map<int, int > &ref) : ref_m(ref) {} void test1(int index) { // std::cout…
背景知识 在使用sql的过程中经常需要建立索引,而每种索引是怎么处罚的又是怎么起到作用的,首先必须知道索引和索引的类型. 索引类型type 我们可以清楚的看到type那一栏有index ALL eq_ref,他们都代表什么意思呢? 首先类型有许多,这里我只给大家介绍用的最多的几种类型: system>const>eq_ref>ref>range>index>ALL 越往左边,性能越高,比如system就比ALL类型性能要高出许多,其中system.const只是理想类型…
这种问题一般是因为引用了匿名变量.涉及左值和右值的区别.一般函数的参数如果是一个表达式,那将会产生一个第3方的匿名变量传入这个函数中,此时如果引用,没用什么实际意义. c++中临时变量不能作为非const的引用参数…
public void moveCircle(Circle circle, int deltaX, int deltaY) { // code to move origin of circle to x+deltaX, y+deltaY circle.setX(circle.getX() + deltaX); circle.setY(circle.getY() + deltaY); // code to assign a new reference to circle circle = new…
先看代码(不想看代码可以直接看代码后的问题描述) //header.h #ifndef _HEADER_H #define _HEADER_H #define defaultSize 128 #include<iostream> #include<string.h> using namespace std; class myString { private: char *ch; int curLength; int maxSize; public: myString(int sz=…
目录 const关键字 const修饰数组 const修饰指针 用两个const修饰指针 @ 开始回顾C基础知识.C中使用指针是很危险的事情,一个不慎就会造成程序崩溃,因此对于传入函数的参数进行保护就是必须的了,特别是针对数组. const关键字 const关键字用于将一个变量声明为只读,也就是常量,无法被修改. const int constant = 10;//声明constant为常量的同时对它进行初始化赋值 int const constant = 10;//也可以将const放在int…
使用osg加载fbx模型,需要自己编译fbx插件,编译流程与插件使用案例如下 代码地址:https://github.com/shelltdf/osgFBX CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctly in the CMake fil…
目录 2018年12月23日 error: no matching function for call to ××× 2018年12月10日 error: expected ')' before '*' token 2018年11月15日 error: invalid conversion from 'const char*' to 'char*' 2018年11月11日 error: a storage class can only be specified for objects and f…
目录 目录 1 1. 前言 1 2. 示例1 1 3. 示例2 2 4. 示例3 3 5. 示例4 3 6. 示例5 6 7. 匿名类规则 6 8. 参考资料 7 1. 前言 本文代码测试环境为“GCC-9.1.0”,有关编译器的安装请参考<安装GCC-8.3.0及其依赖>,适用于“GCC-9.1.0”. 本文试图揭露Lambda背后一面,以方便更好的理解和掌握Lambda.Lambda代码段实际为一个编译器生成的类的“operator ()”函数,编译器会为每一个Lambda函数生成一个匿名…
面向对象编程的C++,和平时做题用的C++还是有差距的.实验的题目都是小题目,就都做一下吧.(没放代码的为要验收的 实验一 简单C++程序设计 1.  猜价格游戏 编写C++程序完成以下功能: (1)      假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数): (2)      提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示: (3)      直到猜对为止,并给出提示. 2.  计算 N 以内的所有素数 编写C++程序完成以下功能: (1)  …
注意:以下测试案例都要加上相应的头文件,必要时要加上algorithm文件. 1.vector 连续存储结构,每个元素在内存上是连续的:支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除操作效率低下:相当于一个数组,但是与数组的区别为:内存空间的扩展.vector的初始化操作 int main(){ vector<int> v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); vector<int> v2=v1;…
C++ string 用法详解 字符串分割(C++)  C++ QUICK REFERENCE Matt Mahoney, mmahoney@cs.fit.edu DECLARATIONS enum weekend {SAT,SUN};   // weekend is a type with values SAT and SUN enum weekend day;         // day is a variable of type weekend enum weekend {SAT=0,S…
对于const变量,我们不能修改它的值,这是这个限定符最直接的表现.但是我们就是想违背它的限定希望修改其内容怎么办呢?下边的代码显然是达不到目的的: ; int modifier = constant; modifier = ; 因为对modifier的修改并不会影响到constant,这暗示了一点:const_cast转换符也不该用在对象数据上,因为这样的转换得到的两个变量/对象并没有相关性. 只有用指针或者引用,让变量指向同一个地址才是解决方案,可惜下边的代码在C++中也是编译不过的: ;…
一.const引用 1. 例子一 #include <iostream> using namespace std; class sp { public: sp() {cout<<"sp()"<<endl;} sp(sp *other) { cout<<"sp(sp *other)"<<endl; } /* * 此例子中这个拷贝构造函数要么不存在, * 只要存在参数必须加const修饰. */ sp(cons…
int f (int & I) { cout<<I<<std::endl; } void main() { long L; f(L); // 编译不过 f((int)L); // 编译不过 f((int&)L);// 编译过 } 编译不会通过,这种情况下pL不会自动转换成int *,因为类型转换会生成临时变量,不能接收函数返回值 void func(int *& a){}; void * p; int * pint; func(pint); func((in…
速度 #include <iostream> using namespace std; class TextBlock { private: string text; public: TextBlock(string s) { text = s; } const char& operator[](size_t position) const {return text[position]; } char& operator[](size_t position) {return t…
目录(作用): 1:修饰变量,说明该变量不可以被改变: 2:修饰指针,分为只想常量的指针和自身是常量的指针 3:修饰引用,指向常量的引用,用于修饰形参,即避免了拷贝,有避免了函数对值的修改: 4:修改成员函数:说明该成员函数内不能修改成员变量. 5:指针与引用     正文:   以下是对各种情况的示例: 注:1:const修饰的引用cj的值且引用的对象无法修改无法修改,但是引用的i是可修改的 #include <iostream> using namespace std; int main(…
一 含义 const修饰的变量在C和C++中的含义是什么?一样吗? 在C中用const修饰的变量仅仅表示这个符合表示的变量不能被赋值,是只读的,那么它与常量有啥区别呢?区别就是一个是常量,一个是变量.常量是不可以被修改的,而变量是可以的,举个例子: #include <stdio.h> int main() { ; int* pb = &b; *pb = ; printf("b = %d\n", b); ; } 运行结果为: [root@TransactionTes…
http://stackoverflow.com/questions/3228664/why-am-i-able-to-change-the-contents-of-const-char-ptr I passed a pointer ptr to a function whose prototype takes it as const. foo( const char *str ); Which according to my understanding means that it will n…
openssl 1.1.1 include/openssl aes.h: # define HEADER_AES_H aes.h: # define AES_ENCRYPT 1 aes.h: # define AES_DECRYPT 0 aes.h: # define AES_MAXNR 14 aes.h: # define AES_BLOCK_SIZE 16 aes.h: struct aes_key_st { aes.h: unsigned long rd_key[4 * (AES_MAXN…
拷贝控制 右值与const引用 背景:当一个函数的返回值是自定义类型时,调用侧用什么类型接收?? 1,如果自定义类型的拷贝构造函数的参数用const修饰了:可以用下面的方式接收. Test t2 = fun(t1); 2,如果自定义类型的拷贝构造函数的参数没有用const修饰了:必须用下面的方式接收 const Test& t2 = fun(t1); Test t2 = fun(t1);//编译不通过 编译错误: cannot bind non-const lvalue reference of…
由于没有const*运算,const实际上修饰的是前面的char*,但不能在定义时转换写成 const(char *)*p,因为在定义是"()"是表示函数. 三.深入理解7种组合 (0)程序 在执行时为其开辟的空间皆在内存(RAM)中,而RAM里的内存单元是可读可写 的:指针只是用来指定或定位要操作的数据的工具,只是用来读写RAM里内存单元的工作指针 .若对指针不加任何限定,程序中一个指针可以指向RAM中的任意位置(除了系统敏感区,如操作系统内核所在区域)并对其指向的内存单元进行读和写…
拷贝构造函数的第一个参数要求是自身类型的引用,但是没有一定要求具有底层const属性即对常量的引用,但是使用时最好加上const,原因是我们可能在某些"不知道"的情况下对常量对象调用拷贝构造函数. 来看一个例子 class HasPtr{ public: HasPtr(const std::string &s=std::string()):ps(new std::string(s)),i(0){ std::cout<<"construction call&…
Predict the output of following C++ program. 1 #include<iostream> 2 using namespace std; 3 4 class Test 5 { 6 protected: 7 int x; 8 public: 9 Test (int i):x(i) 10 { 11 } 12 13 void fun() const 14 { 15 cout << "fun() const called " &l…